<?php
class Image{
    private $mime;//存储mime信息
    private $src_file;//文件路径
    private $thumb_path;//存储缩略图资源地址
    //定义一个创建图像西资源的属性数组
    private $create_func=array(
        'image/png'=>'imagecreatefrompng',
        'image/jpeg'=>'imagcreatefromjpeg',
        'image/gif'=>'imagecreatefromgif',
    );
    //定义一个输出图像资源的属性数组
    private $output_func=array(
        'image/png'=>'imagepng',
        'image/jpeg'=>'imagejpeg',
        'image/gif'=>'imagegif',
    );
    //定义一个获取mime信息方法
    private function getMime($src_file){
        $info=getimagesize($src_file);
        $this->mime=$info['mime'];
    }
    //定义一个构造方法 初始化mime属性和文件名
    public function __construct($src_file)
    {
        $this->src_file=$src_file;
        $this->getMime($src_file);
    }
    //定义一个获取创建图像资源的方法
    private function get_create_func(){
        return $this->create_func[$this->mime];
    }
    //定义输出图像资源的方法
    private function get_output_func(){
        return $this->output_func[$this->mime];
    }
    //定义一个设置生成缩略图地址的方法
    public function setThumbPath($path){
        if (!is_dir($path)){
            $this->thumb_path=APP_PATH.'.public/static/thumb';
        }else{
            $this->thumb_path=$path;
        }
    }
    //    自己定义一个制作缩略图的方法
    public function makeThumb($area_w,$area_h){
//        $dst_image=imagecreatetruecolor(50,50);
//        先获取创建的方法
        $create_fun=$this->get_create_func();
        $src_image=$create_fun($this->src_file);

        $dst_x=0;
        $dst_y=0;
        $src_x=0;
        $src_y=0;

        $src_w=imagesx($src_image);//原图的宽度
        $src_h=imagesy($src_image);//原图的高度
        if($src_w>=$src_h){
            $dst_w=$area_w;
            $dst_h=(int)$src_h/($src_w/$area_w);
        }else{
            $dst_h=$area_h;
            $dst_w=(int)$src_w/($src_h/$area_h);
        }
        $dst_image=imagecreatetruecolor($dst_w,$dst_h);

        imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);

        imagepng($dst_image,'test.png');

    }
}
$image=new Image("06.png");
$image->setThumbPath("./");
$image->makeThumb(100,100);